


#include <stdio.h>

//#include <assert.h>
//#include <stdlib.h>
//#include <string.h>
//#include <ctype.h>
//
//char* sortSentence(char* s)
//{
//    char* ppc[9] = { 0 };
//    for (int i = 0; i < 9; ++i)
//    {
//        ppc[i] = (char*)calloc(201, sizeof(char));
//        assert(ppc[i]);
//    }
//
//    int i = 0, sz = strlen(s);
//    int beg = 0, end = 0;
//    while (i < sz)
//    {
//        if (isdigit(s[i]))
//        {
//            end = i;
//
//            int j = 0;
//            while (beg < end)
//            {
//                ppc[s[i] - '0' - 1][j++] = s[beg++];
//            }
//
//            beg += 2;
//            i = beg;
//            continue;
//        }
//        ++i;
//    }
//
//    int cnt = 0;
//    for (i = 0; i < sz; ++i)
//    {
//        if (isblank(s[i]))
//            ++cnt;
//    }
//    char* ans = (char*)calloc(sz - (cnt + 1) + 2, sizeof(char));
//    assert(ans);
//
//    int j = 0, k = 0;
//    for (i = 0; i < 9; ++i)
//    {
//        j = 0;
//        if (!ppc[i][j])
//            break;
//
//        while (ppc[i][j])
//        {
//            ans[k++] = ppc[i][j++];
//        }
//        ans[k++] = ' ';
//    }
//    ans[k - 1] = 0;
//
//    for (i = 0; i < 9; ++i)
//    {
//        free(ppc[i]);
//        ppc[i] = NULL;
//    }
//
//    return ans;
//}
//int main()
//{
//    char* s = "is2 sentence4 This1 a3";
//
//    printf(sortSentence(s));
//
//	return 0;
//}

#include <stdlib.h>
#include <assert.h>
#include <time.h>

int findLHS(int* nums, int numsSize)
{
    if (1 == numsSize)
        return 0;

    int i = 0;
    int min = nums[0], max = nums[0];
    for (i = 1; i < numsSize; ++i)
    {
        if (min > nums[i])
            min = nums[i];

        if (max < nums[i])
            max = nums[i];
    }

    int* cnt = (int*)calloc(max - min + 1, sizeof(int));
    assert(cnt);

    for (i = 0; i < numsSize; ++i)
    {
        cnt[nums[i] - min]++;
    }

    int ans = 0, tmp = 0;
    for (i = 0; i < max - min; ++i)
    {
        if (cnt[i] && cnt[i + 1])
        {
            if (tmp = cnt[i] + cnt[i + 1])
            {
                if (tmp > ans)
                    ans = tmp;
            }
        }
    }

    return ans == 1 ? 0 : ans;
}
int main()
{
   

    int arr[] = { -20433587,34803526,-37223909,-25731020,-38240044,-758127,-12193138,-7000830,32906996,-14502719};
    int sz = sizeof(arr) / sizeof(arr[0]);

    clock_t beg = clock();
    findLHS(arr, sz);
    clock_t end = clock();

    int ret = findLHS(arr, sz);
    printf("time:%d\n%d\n", end-beg, ret);

    return 0;
}